tg-me.com/pyHints/657
Last Update:
#Quick
یک عادت خوبی که توی بچههای ایران هست که یک endpoint
توی پروژههای بکند میسازند به اسم health-check
اما ۹۰٪ اشتباه پیادهسازی میشه متأسفانه.
برای اونایی که نمیدونند، health-check
برای این هست که بصورت اتوماتیک یک سیستم دیگه مثل k8s
یا سیستم مانیتورینگ بتونه وضعیت بکند رو بررسی کنه و اگر جوابی نگرفت ایمیل بزنه یا اون pod
رو ریست کنه.
حالا چرا میگم اشتباه پیادهسازی میشه، اول میرم سراغ مانیتورینگ:
فرض کن شما یک بکند داری که برای کار کردن به postgres, celery
نیاز داره با این وضعیت سیستم شما وقتی سالم هست که به postgres
شما بتونه یه درستی دسترسی بگیره و البته به celery
(عملکرد celery, postgres
رو اگر بخواید بررسی کنید نیاز به ۲ تا سیستم مانیتورینگ جدا دارید، برای شما توی سطح اپلیکیشن دسترسی به این سرویسها مهم هست)
فکر کنم متوجه منظورم شدید؛ توی health-check
باید دسترسی به سرویسهایی که بکند شما بدون اونا healthy
نیست رو هم چک کنید.
توی مثال قبلی اگر celery
برای شما اجبار نیست توی health-check
کانکشن بهش رو تست نمیکنید.
حالا چرا k8s
رو مثال زدم ؟ برای اینکه بگم استفاده از این endpoint
برای بررسی pod ها کار درستی نیست:
هر pod
بصورت جداگونه و بصورت تک سرویس در نظر گرفته میشه که به تنهایی میتونه restart
بشه بدون اینکه به سیستم لطمه بزنه (من HA
درنظرم گرفتم، k8s
برای همینه دیگه) پس باید تو سریعتر زمانی که عملکرد خودش رو از دست میده restart
بشه فکر کن load سیستم بره بالا در این شرایط هم از روی health-check
نمیشه مطمئن بود آیا چون load شبکه رفت بالا جواب دیر میاد یا memory leakage
داریم یا ...
پس سرویس رو از exception, ... مانیتور کنید با k8s
تا جایی که میشه.
BY Python Hints
Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283
Share with your friend now:
tg-me.com/pyHints/657